package pl.marekbar.czynnosc;

import java.util.ArrayList;
import java.util.List;

import com.tekle.oss.android.animation.AnimationFactory;
import com.tekle.oss.android.animation.AnimationFactory.FlipDirection;

import pl.marekbar.Aplikacja;
import pl.marekbar.Data;
import pl.marekbar.Gesty;
import pl.marekbar.KameraWidok;
import pl.marekbar.Komunikat;
import pl.marekbar.R;
import pl.marekbar.Gesty.GestySluchacz;
import pl.marekbar.baza.Krolik;
import pl.marekbar.widoki.DropDownAdapter;
import pl.marekbar.widoki.DropDownKrolikAdapter;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnLongClickListener;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.RadioButton;
import android.widget.Spinner;
import android.widget.ToggleButton;
import android.widget.ViewAnimator;

public class EkranDodaj extends Activity implements GestySluchacz
{
	private Gesty detektor;
	private int IDENTYFIKATOR = 512;
	private ImageView obrazek = null;
	private Button przyciskZapisz = null;
	private String sciezkaPlikuZdjecia = "";
	private Spinner waga;
	private Spinner matka;
	private Spinner ojciec;
	private Context kontekst;
	private ViewAnimator viewAnimator;


	public void onCreate(Bundle paczka)
	{
		super.onCreate(paczka);
		Aplikacja.ustawKontekst(getApplicationContext());
		this.setContentView(R.layout.ekran_dodaj);
		kontekst = EkranDodaj.this;
		obrazek = (ImageView) findViewById(R.id.imageViewZdjecie);
		obrazek.setOnLongClickListener(ustawZdjecie);

		przyciskZapisz = (Button) findViewById(R.id.buttonDodajZapisz);
		przyciskZapisz.setOnClickListener(zapisz);

		waga = (Spinner) findViewById(R.id.spinnerWaga);

		matka = (Spinner) findViewById(R.id.spinnerMatka);
		matka.setAdapter(this.pobierzKroliki(Krolik.SAMICA));

		ojciec = (Spinner) findViewById(R.id.spinnerOjciec);
		ojciec.setAdapter(this.pobierzKroliki(Krolik.SAMIEC));

		detektor = new Gesty(this, this);

		waga.setAdapter(this.pobierzWagi());
		//viewAnimator = (ViewAnimator)findViewById(R.id.ed_fliper);
	}



	private DropDownAdapter pobierzWagi()
	{
		List<String> wagi = new ArrayList<String>();
		float wagaKg = 0;
		while (wagaKg <= 15)
		{
			wagi.add(Float.toString(wagaKg));
			wagaKg += 0.25;
		}
		String[] teksty = new String[wagi.size()];
		int i = 0;
		for (String waga : wagi)
		{
			teksty[i] = waga;
			i++;
		}
		return new DropDownAdapter(EkranDodaj.this,
				android.R.layout.simple_spinner_item, teksty);
	}



	private DropDownKrolikAdapter pobierzKroliki(String plec)
	{
		if (plec != Krolik.SAMICA && plec != Krolik.SAMIEC
				&& plec != Krolik.NIESPRAWDZONE)
		{
			Aplikacja
					.blad("Nie podano prawidłowo płci zwierzęcia w kryteriach wyszukiwania");
		}

		List<Krolik> kroliki = ((plec == Krolik.SAMICA) ? Krolik
				.pobierzSamice(kontekst) : Krolik.pobierzSamce(kontekst));

		return new DropDownKrolikAdapter(this.kontekst,
				android.R.layout.simple_spinner_item, kroliki);
	}

	private OnClickListener zapisz = new OnClickListener()
	{

		@Override
		public void onClick(View v)
		{
			Krolik krolik = new Krolik();
			EditText nazwa = (EditText) findViewById(R.id.editTextNazwa);
			krolik.ustawNazwa(nazwa.getText().toString());

			krolik.ustawZdjecieGlowne(sciezkaPlikuZdjecia);

			RadioButton samica = (RadioButton) findViewById(R.id.radioSamica);
			RadioButton samiec = (RadioButton) findViewById(R.id.radioSamiec);
			if (samica.isChecked())
			{
				krolik.ustawPlec(Krolik.SAMICA);
			}
			if (samiec.isChecked())
			{
				krolik.ustawPlec(Krolik.SAMIEC);
			}

			ToggleButton czyNaUboj = (ToggleButton) findViewById(R.id.toggleButtonUboj);
			krolik.ustawCzyNaUboj(czyNaUboj.isChecked());

			ToggleButton czyNaSprzedaz = (ToggleButton) findViewById(R.id.toggleButtonSprzedany);
			krolik.ustawCzySprzedany(czyNaSprzedaz.isChecked());

			ToggleButton czyZyje = (ToggleButton) findViewById(R.id.toggleButtonZyje);
			krolik.ustawCzyZyje(czyZyje.isChecked());

			Spinner waga = (Spinner) findViewById(R.id.spinnerWaga);
			krolik.ustawWaga(waga.getSelectedItem().toString());

			EditText opis = (EditText) findViewById(R.id.editTextOpis);
			krolik.ustawOpis(opis.getText().toString());

			DatePicker urodzony = (DatePicker) findViewById(R.id.datePickerDataUrodzenia);
			krolik.ustawDataUrodzenia(new Data(urodzony));

			DatePicker kupiony = (DatePicker) findViewById(R.id.datePickerDataZakupu);
			krolik.ustawDataZakupu(new Data(kupiony));

			krolik.ustawDataSprzedazy(krolik.pobierzDataUrodzenia());
			krolik.ustawPochodzenie("");

			krolik.ustawMatka(0);
			krolik.ustawOjciec(0);

			if (krolik.dodaj(EkranDodaj.this))
			{
				wrocDoListy();
			}
		}

	};

	private OnLongClickListener ustawZdjecie = new OnLongClickListener()
	{
		@Override
		public boolean onLongClick(View v)
		{
			Intent i = new Intent(EkranDodaj.this, KameraWidok.class);
			startActivityForResult(i, IDENTYFIKATOR);
			return false;
		}

	};
	



	@Override
	protected void onActivityResult(int kodZadania, int kodOdpowiedzi,
			Intent zamiar)
	{
		if (kodZadania == IDENTYFIKATOR)
		{
			if (kodOdpowiedzi == KameraWidok.KOD_POWODZENIE)
			{
				String sciezkaPliku = zamiar
						.getStringExtra(KameraWidok.OZNACZENIE_ZDJECIA);
				this.sciezkaPlikuZdjecia = sciezkaPliku;
				Aplikacja.info(this.sciezkaPlikuZdjecia);
				obrazek.setImageBitmap(BitmapFactory.decodeFile(sciezkaPliku));
			}
			else
			{
				Komunikat.alertOkno(this, "Nie  zrobiono zdjęcia");
			}
		}
	}



	@Override
	public boolean dispatchTouchEvent(MotionEvent zdarzenie)
	{
		this.detektor.onTouchEvent(zdarzenie);
		return super.dispatchTouchEvent(zdarzenie);
	}



	@Override
	public void onPrzesuniecie(int kierunek)
	{
		switch (kierunek)
		{
			case Gesty.PRZESUNIECIE_W_DOL:
			{

			}
				break;
			case Gesty.PRZESUNIECIE_W_GORE:
			{

			}
				break;
			case Gesty.PRZESUNIECIE_W_LEWO:
			{
				this.wrocDoListy();
			}
				break;
			case Gesty.PRZESUNIECIE_W_PRAWO:
			{
				//AnimationFactory.flipTransition(viewAnimator, FlipDirection.LEFT_RIGHT);
			}
				break;
		}
	}



	@Override
	public void onPodwojneDotkniecie()
	{

	}



	private void wrocDoListy()
	{
		Intent zamiar = new Intent(EkranDodaj.this, EkranGlowny.class);
		startActivity(zamiar);
	}

}
